<?xml version="1.0"?>
<!--
  ~ JBoss, Home of Professional Open Source.
  ~ Copyright 2012 Red Hat, Inc., and individual contributors
  ~ as indicated by the @author tags.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<!DOCTYPE module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
        "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">

    <!-- Suppress certain checkstyle rules for certain files -->
    <module name="SuppressionFilter">
        <property name="file" value="src/config/checkstyle-suppressions.xml"/>
    </module>

    <module name="FileTabCharacter">
        <property name="eachLine" value="true"/>
    </module>

    <module name="RegexpSingleline">
        <!-- \s matches whitespace character, $ matches end of line. -->
        <property name="format" value="\s+$"/>
        <property name="message" value="Line has trailing spaces."/>
    </module>

    <module name="TreeWalker">

        <property name="cacheFile" value="${checkstyle.cache.file}"/>

        <!-- Checks for imports                              -->
        <module name="AvoidStarImport">
            <property name="allowStaticMemberImports" value="true"/>
        </module>
        <module name="RedundantImport"/>
        <!-- Disabled until checkstyle can recognize imports which are used only by javadoc -->
        <!--<module name="UnusedImports"/>-->

        <!-- Modifier Checks                                    -->
        <module name="ModifierOrder"/>
        <module name="RedundantModifier"/>

        <!-- Checks for blocks. You know, those {}'s         -->
        <module name="LeftCurly"/>

        <!-- Checks for common coding problems               -->
        <!-- Disabled until http://sourceforge.net/tracker/?func=detail&aid=2843447&group_id=29721&atid=397078 is fixed-->
        <!--<module name="DoubleCheckedLocking"/>-->
        <module name="EmptyStatement"/>
        <module name="EqualsHashCode"/>
        <module name="IllegalInstantiation"/>
        <module name="RedundantThrows">
            <property name="allowUnchecked" value="true"/>
        </module>

        <!-- Miscellaneous other checks.                   -->
        <module name="UpperEll"/>
        <module name="PackageAnnotation"/>
        <module name="CovariantEquals"/>
        <module name="ArrayTypeStyle"/>

    </module>

</module>

